﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SGTLightAccent.Web.Models
{
    public partial class Remito_Barco
    {
       

        public Nullable<decimal> PesoNeto
        { get
            {
               return (this.Bruto1 + this.Bruto2)- (this.Tara_1 + this.Tara_2);

            }
        }

        public Nullable<decimal> Bruto1
        {
            get {
                if (this.Peso_Bruto != null)
                    return this.Peso_Bruto;
                else
                    return 0;
            }
            set
            {
                Peso_Bruto = value;
                RaisePropertyChanged("Bruto1");
                //RaisePropertyChanged("Peso_Bruto");
                RaisePropertyChanged("PesoNeto");
                RaisePropertyChanged("PesoActual");
            }
        }

        public Nullable<decimal> Bruto2
        {
            get
            {
                if (this.Peso_Bruto2 != null)
                    return this.Peso_Bruto2;
                else
                    return 0;
            }
            set
            {
                Peso_Bruto2 = value;
                RaisePropertyChanged("Bruto2");
                //RaisePropertyChanged("Peso_Bruto2");
                RaisePropertyChanged("PesoNeto");
                RaisePropertyChanged("PesoActual");
            }
        }

        public Nullable<decimal> Tara_1
        {
            get
            {
                if (this.Tara != null)
                    return this.Tara;
                else
                    return 0;
            }
            set
            {
                Tara = value;
                RaisePropertyChanged("Tara_1");
                //RaisePropertyChanged("Tara");
                RaisePropertyChanged("PesoNeto");
            }
        }

        public Nullable<decimal> Tara_2
        {
            get
            {
                if (this.Tara2 != null)
                    return this.Tara2;
                else
                    return 0;
            }
            set
            {
                Tara2 = value;
                RaisePropertyChanged("Tara_2");
                //RaisePropertyChanged("Tara2");
                RaisePropertyChanged("PesoNeto");
            }
        }


        public Remito_Barco(Carga carga)
        :base()
        {
            this.Carga = carga;
            this.setNumeroID();
        }

        public void validarRemito()
        {
            if (this.Bodega == null)
                throw new Exception("Debe seleccionar una Bodega.");
            /*if (this.Deposito == null)
                throw new Exception("Debe seleccionar un Depósito.");
            if (this.Matricula_Camion== null)
                throw new Exception("Debe ingresar la matrícula.");
            if (this.Hora_Llegada == null)
                throw new Exception("Debe ingresar la hora de llegada.");
            if (this.Hora_Salida == null)
                throw new Exception("Debe ingresar la hora de salida.");
            if (this.Peso_ANP == null)
                throw new Exception("Debe ingresar el peso ANP.");
            if (this.Peso_Bruto == null)
                throw new Exception("Debe ingresar el peso Bruto.");
            if (this.Tara == null)
                throw new Exception("Debe ingresar la Tara.");*/
            
        }

        public void setNumeroID()
        {
            this.Numero_Remito_Carga = this.Carga.Remito_Barco.Count;
           
        }
    }
}
